The modern communications era has brought about a tremendous expansion of wireline and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. One area in which there is a demand to increase the ease of information transfer and convenience to users relates to provision of information sharing in P2P networks. A P2P network is generally considered a network that relies primarily on the computing power and bandwidth of the devices (i.e., peers) within the network. Accordingly, P2P networks generally do not concentrate computing power and bandwidth within servers. Instead, each of the peer devices is capable of simultaneously functioning as both a client and a server to other nodes of the P2P network. In this regard, when the peer device functions as client the device is able to request data from other peer devices in the P2P network and store this data once received from another peer device. On the other hand, when the peer device operates as a server, the peer device is able to accept requests from other peer devices, process them and send the requested data to the peer devices in the P2P network. The architecture of P2P networks typically involves connecting nodes via largely ad hoc connections over which participant nodes can, for example, share content files containing audio, video, data or virtually anything in a digital format. Accordingly, data such as real time data or telephony traffic could be shared using a P2P network.
Given the ubiquitous nature of mobile terminals, such as mobile phones and numerous other mobile electronic devices, P2P networks are becoming more common for sharing content between individuals in social groups or social networks. These social networks may center on a group of friends, relatives, co-workers, business associates, or people who share a common interest. Each individual (i.e., node) within a social network may invite other individuals to join. As such, although any particular node may generally communicate with a given group of other nodes within the social network, each of the other nodes may subsequently communicate with yet other nodes. Accordingly, within a social network, each node may be defined in terms of a degree of separation from each other node.
P2P networks can provide a mechanism for storing different types of data in a distributed way. In this regard, a distributed hash table (DHT) may define a structured overlay network architecture. A DHT architecture may be enabled to locate a particular piece of data stored in the overlay network using a limited number of messages, typically log(N) messages (N being a number of nodes in the network). Nodes of the overlay network are called peers, and each peer may have a unique peer ID (or node ID), which may be assigned when the peer joins the DHT. The DHT may be organized in a ring topology. Accordingly, the hash table's keyspace may be thought of as circular and peer IDs may be 128-bit unsigned integers representing position in the circular keyspace. Peer IDs are typically created by hashing the Internet Protocol (IP) address of the peer device. Thus, if the IP address of the peer changes, the peer ID also changes.
Additionally, each peer may maintain a routing table (e.g., a finger table) that may be used to route messages to a designated destination. The routing (or finger) table may include a list of peers and the corresponding IP address of each of the peers (and/or other connectivity information) in the overlay network. In some embodiments, the number of peers in the list may be much smaller than the number of peers in the overlay. The routing table may therefore represent a collection of shortcuts to move throughout the DHT ring to reduce the number of hops needed to locate a particular resource in the network. Additionally, the shortcuts in the routing table could include pointers to peers in the DHT ring or pointers to devices that are external to the DHT ring. Resources stored in the DHT may be indexed using corresponding data IDs, in which data IDs are distributed among DHT nodes. Each DHT node may store a subset of data IDs. One of the focuses of using the DHT involves changes in the set of participants in the P2P network causing a minimal amount of disruption. For instance, usage of the DHT is intended to limit the amount of work needed to be done for each change in membership of the peer devices in the P2P network. Generally this allows DHTs to scale to extremely large numbers of peer devices and to handle continual node arrivals, departures and failures in the P2P network.
One problem that is common among P2P networks relates to the transition of a device from a peer mode to a client mode as well as the transition from the client mode back to a peer mode increases the disruption to the DHT which typically is updated when the peer device changes its functionality from a client to a peer and vice versa. Increases in the disruption of the DHT may lead to problems associated with load balance, routing and data storage and quick retrieval of data by the peers in the P2P network.
As such, it may be beneficial to provide a mechanism for improving the transition of a peer device to a client functionality as well as the transition from the client functionality of the peer device to a server functionality with a minimal impact on a distributed hash table (DHT).